/**
 * @file main.cpp
 * @brief 角点网格到有限元网格转换程序的主入口
 * 
 * 程序功能:
 * 1. 读取角点网格数据(Grid_E.out)
 * 2. 转换为有限元网格格式
 * 3. 输出VTK格式的网格文件
 * 4. 自动检测和处理断层
 */

#ifdef _WIN32
#include <windows.h>
#include <fcntl.h>
#include <io.h>
#endif

#include <iostream>
#include "MeshProcessor.h"
#include <string>

/**
 * @brief 程序入口函数
 * @param argc 命令行参数数量
 * @param argv 命令行参数数组
 * @return 成功返回0,失败返回1
 * 
 * 主要执行流程:
 * 1. 设置输入输出文件路径
 * 2. 创建网格处理器实例
 * 3. 执行网格转换处理
 * 4. 异常处理和错误报告
 */
int main(int argc, char *argv[])
{
    try
    {
        // 设置输入输出文件路径
        // 输入文件为角点网格数据
        std::string input_file = "./q3/input/Grid_E.out";
        // 输出文件为VTK格式的有限元网格
        std::string output_file = "./q3/output/finiteGrid.vtk";

        // 创建网格处理器实例并执行处理
        // 处理器会自动进行内存管理和资源清理
        MeshProcessor processor(input_file, output_file);
        processor.process();

        return 0;
    }
    catch (const std::exception &e)
    {
        // 捕获并报告所有异常
        // 使用cerr输出错误信息到标准错误流
        std::cerr << "错误: " << e.what() << std::endl;
        return 1;
    }
} 